草庐IT

c++ - std::string 的引用计数

全部标签

c - 为什么 Windows 要求导入 DLL 数据?

在Windows上,可以从DLL加载数据,但需要通过导入地址表中的指针进行间接访问。因此,编译器必须知道正在访问的对象是否是使用__declspec(dllimport)从DLL导入的。类型说明符。这很不幸,因为这意味着设计用作静态库或动态库的Windows库的header需要知道程序链接到哪个版本的库。此要求不适用于函数,这些函数是为DLL透明地模拟的,stub函数调用实际函数,其地址存储在导入地址表中。在Linux上,动态链接器(ld.so)将所有链接数据对象的值从共享对象复制到每个进程的私有(private)映射区域。这不需要间接寻址,因为私有(private)映射区域的地址是模

string - Windows批处理文件-在文件中查找字符串并将其追加

所以我已经接近了我想要达到的目标,但我似乎无法超越我目前所坚持的观点。首先,我有一个.ini文件,它有一个头和一个以逗号分隔的项列表:[Items]ListOfItems=Item01,Item02,Item03我需要做的是找到那个特定的部分(listofitems),并在其中附加一个引用文件中不存在的新项。以下是我目前掌握的情况:SET/PNewItem=SETListOfItems=FOR/Fdelims^=^"^tokens^=2%%GIN('typeFile.ini')DO(setListOfItems=%%G)echoListOfItems^=^"%ListOfItems%,

c - Detecting if stdout is a console with MS Visual compilation, mingw64提供的console

我维护一个生成二进制数据的命令行实用程序。请求时,数据可以重定向到stdout。这在stdout被重定向到管道或文件时有效,但当stdout是一个控制台时,情况就不太一样了,因为它会垃圾控制台。为了保护用户免受此类错误,程序必须检测stdout是否是控制台,并在是时退出。现在,这并不是什么新鲜事,快速浏览一下Internet就会发现多种解决方案。主要缺点是没有“通用”方法,VisualStudio需要自己的风格。我用于Visual的控制台检测器有一个缺陷:它没有检测到stdout是一个控制台当控制台由mingw提供时,我认为这意味着它是mintty。这里是相关的代码部分:#ifdefi

c - 如何在 C 中的 DLL 中执行线程

我创建了一个运行3个工作线程的DLL,主线程处于循环中等待线程完成。线程已创建,但未执行线程。我尝试在使用CreateThread()创建的函数中设置MessageBox函数,但该框没有出现。我也尝试过调试,CreateThread()的返回值有效,因此线程被创建。BOOLWINAPIDllMain(){main();return1;}intmain(){HANDLEh1,h2,h3;h1=CreateThread(first)...h2=CreateThread(second)...h3=CreateThread(third)...WaitForSingleObject(h3,INF

windows - 简单的 jq 过滤器在 Windows shell 中不起作用,各种引用问题

我非常努力地让Windowsshell与jq一起工作,但惨遭失败。我想要这种类型的东西工作echo'["a","b","c"]'|.\Downloads\jq.exe-r'{"data":map({"{#SNAME}":.})}'但是我得到一个错误:jq:error:syntaxerror,unexpected'.'(Windowscmdshellquotingissues?)at,line1:如果我只是做echo'["a","b","c"]'|.\Downloads\jq.exe-r'.'然后很高兴,但我很快就添加了其他字符,例如echo'["a","b","c"]'|.\Downl

c++ - DuplicateHandle() 是否进行任何进程间通信 (IPC),如果不进行,为什么要使用目标参数?

我正在寻找DuplicateHandle()非常困惑。第三个和第四个参数hTargetProcessHandle和lpTargetHandle似乎暗示这个API函数进行某种形式的进程间通信,但我在网上阅读的内容似乎暗示(没有直接说)实际上这个函数不能与外部的任何东西通信它自己的进程的地址空间,如果你真的想说将本地进程句柄复制到另一个进程,你必须自己手动完成。所以有人可以可怜我并明确地告诉我这个函数本身是否有任何IPC吗?另外,如果它不执行任何IPC,那么这两个参数的意义何在?如果没有发送数据并且此函数的输出对其他进程不可见,怎么会有“目标”?起初我以为我可以调用GetCurrentPr

c# - 在 Windows 8.1 中打印 WPF FixedPage 时为空引用

我有一个.netFrameworkv4.7.2WPF应用程序打印了一个FixedPage,它在Windows7上运行时没有任何问题,但在Windows8.1上运行时我遇到了一些问题.以下代码块是造成问题的原因:privatevoidPrint(){using(varprintQueue=LocalPrintServer.GetDefaultPrintQueue()){varprintTicket=printQueue.DefaultPrintTicket;varwriter=PrintQueue.CreateXpsDocumentWriter(printQueue);writer.Wr

windows - Jenkinsfile windows cmd 输出变量引用

我是groovy的新手。在我的Jenkinsfile中,我试图将windowscmd输出存储在一个变量中,在下一个命令中使用它,但似乎没有任何效果。这是我得到的最接近的:pipeline{agentanystages{stage('package-windows'){when{expression{isUnix()==false}}steps{script{FILENAME=bat(label:'Getfilename',returnStdout:true,script:"dir\".\\archive\\%MY_FOLDER%\\www\\main.*.js\"/s/b")}batl

c - 句柄无效

尝试使用SetConsoleScreenBufferSize但失败并显示“句柄无效”。在最后一个错误。将发布所有代码,但这里有一些要点:使用它来调整缓冲区大小:intTGHandleResizeEvent(structTGHandle*tgHandle,INPUT_RECORDrecord){if(record.EventType==WINDOW_BUFFER_SIZE_EVENT){WINDOW_BUFFER_SIZE_RECORDsize=record.Event.WindowBufferSizeEvent;sizeTGDrawBuffer(&tgHandle->drawBuffe

c - WM_SYSCOLORCHANGE 消息的含义

来自documentation:WM_SYSCOLORCHANGEmessageissenttoalltop-levelwindowswhenachangeismadetoasystemcolorsetting.Applicationsthathavebrushesusingtheexistingsystemcolorsshoulddeletethosebrushesandre-createthemusingthenewsystemcolors.声明全局变量HBRUSHg_hBackground=NULL;在WM_CREATE消息处理程序中创建背景画笔caseWM_CREATE:g_h